#include <header.h>

int main(){

    int fd_r = open("1.pipe", O_RDONLY);
    int fd_w = open("2.pipe", O_WRONLY);

    while(1){
        //  标准输入有没有数据, 标准输入可不可读? 
        //  对方有没有给我发信息,  管道fd_r可以不可以读?
        // TODO:  告诉我谁可读?

        fd_set set;
        FD_ZERO(&set);
        FD_SET(STDIN_FILENO, &set);
        FD_SET(fd_r, &set);

        // 第一个参数: 写要监听的文件描述下标的最大值+1
        select(fd_r+1, &set, NULL, NULL, NULL);

        // 走到这:  意味着要么标准输入有输入,  要么对方给我发信息 
        if(FD_ISSET(STDIN_FILENO, &set)){
            // 有标准输入
            char buf[100] = {0};
            read(STDIN_FILENO, buf, sizeof(buf));
            write(fd_w, buf, sizeof(buf));
        }
        if(FD_ISSET(fd_r, &set)){
            char buf[100] = {0};
            size_t ret = read(fd_r, buf, sizeof(buf));
            if(ret == 0){
                break;
            }
            printf("buf: %s \n", buf);
        }
    }

    close(fd_r);
    close(fd_w);
    return 0;
}

